Association of an input and output of a peripheral device in a computing system

ABSTRACT

A method on a computing system for associating an output of a coupled peripheral device to an input of the peripheral device is provided. The method comprises receiving a descriptor configuration input from the coupled peripheral device describing attributes of the peripheral device and an association between the input of the peripheral device and the output of the peripheral device; providing peripheral device classes of associated input attributes including associated output attributes of the peripheral device; and informing an instantiated application of attributes of the peripheral device through classes. In another implementation, the method comprises providing an interface set comprising associated input attributes and output attributes of a peripheral device; using an input logical layer to access attributes of an interface set for an input of the peripheral device including associated output attributes of the peripheral device; selecting an attribute associated with the input; and setting the selected attribute of the peripheral device. In yet another implementation, a computing system configured to be coupled to a peripheral device comprising an input and an associated output is provided. The computing system comprises an input logical layer configured to receive descriptor configuration information from the peripheral device and build interface sets including attributes of the input of the peripheral device and the associated output. The input logical layer uses the interface sets to select and set attributes of the output of the peripheral device.

BACKGROUND

Many peripheral devices include both inputs and outputs that are notassociated with each other. An application instantiated on a computingsystem coupled to the peripheral devices may not have access to theassociation of the input and the output of the peripheral device.

SUMMARY

Implementations described and claimed herein address the foregoingproblems by allowing for association of an output of a peripheral devicewith an input of that peripheral device in a computing system. Theassociation of the output with the input of the peripheral deviceprovides an ability to link the associated input and output of theperipheral device in a computing system. An application instantiated onthe computing system may use the association of the input and outputcapabilities of the peripheral device.

In one implementation, for example, descriptor information of aperipheral device is received from a coupled peripheral device. Thedescriptor information describes attributes of the peripheral device andan association between an input of the peripheral device and an outputof the peripheral device. Peripheral device classes of associated inputattributes including associated output attributes of the peripheraldevice are provided and an instantiated application is informed ofattributes of the peripheral device through classes.

In another implementation, an interface layer is provided comprisingassociated input attributes and output attributes of an associateddevice. An input logical layer is used to access attributes of aninterface layer for an input of the peripheral device includingassociated output attributes of the peripheral device. An attributeassociated with the peripheral device is selected and set.

In yet another implementation, for example, descriptor information of aperipheral device is received and used to build interface sets includingattributes of an input and an associated output of the peripheraldevice. The interface sets may be used to select and set attributes ofthe peripheral device.

In some implementations, articles of manufacture are provided ascomputer program products. One implementation of a computer programproduct provides a computer program storage medium readable by acomputer system and encoding a computer program. Another implementationof a computer program product may be provided in a computer data signalembodied in a carrier wave by a computing system and encoding thecomputer program. Other implementations are also described and recitedherein.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter. Otherfeatures, details, utilities, and advantages of the claimed subjectmatter will be apparent from the following more particular writtenDetailed Description of various embodiments and implementations asfurther illustrated in the accompanying drawings and defined in theappended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a schematic diagram of an example implementation of acomputing system for associating an output of a peripheral device withan input of that peripheral device.

FIG. 2 depicts an example implementation of a data structure that may beused for associating an output of a peripheral device with an input ofthat peripheral device.

FIG. 3 depicts example operations for associating an output of aperipheral device with an input of that peripheral device in a computingsystem.

FIG. 4 depicts a schematic diagram of a general purpose computing systemfor implementing aspects of the computing system.

DETAILED DESCRIPTION

A computing system for associating an output of a peripheral device withan input of that peripheral device is provided.

FIG. 1 depicts an example computing system 100 that associates outputcapabilities of a peripheral device 102 with input attributes of thatperipheral device 102. The computing system 100 is coupled to at leastone peripheral device 102. The peripheral device 102 comprises at leastone input capability and at least one output capability that can beassociated with that input capability.

The peripheral device 102 may comprise any type of peripheral devicethat may be coupled to the computing system 100. The peripheral device102 may comprise, for example, a typical peripheral input device for adesktop or laptop computer, such as a keyboard, a mouse, a joystick, agame controller, a tablet screen, a web camera, a microphone, anexternal storage device, or other computer input/output peripheraldevice. The peripheral device 102 may also comprise a peripheral deviceto any other type of computing system, such as a mobile telephone, asecurity system, a vehicle or airplane control system, or any other typeof computing system. The peripheral device 102 may, for example,comprise a peripheral device to an automobile computing system, such asan identification (e.g., bio-identification or keypad) module, an entrydoor handle, a button, a touch pad or screen, or any other type ofperipheral device that may be coupled to and controlled by the computingsystem 100.

The peripheral device 102 may be coupled to the computing system 100 inany manner, such as via a wired or wireless link 104. The peripheraldevice 102 may be integral with the computing system 100 (e.g., a laptopcomputer or mobile telephone keyboard) or removably coupled to thecomputing system 100 via a wireless or wired connection (e.g., an IEEE802.11 wireless peripheral device, a Bluetooth wireless peripheraldevice, a radio frequency wireless peripheral device, a serialperipheral device, a universal serial bus (USB) peripheral device (e.g.,a human interface device (HID) such as a keyboard, a mouse, or a joystick), a camera, an external storage device, a microphone, or thelike).

A peripheral device 102 may include any number of inputs associated withany number of outputs on the peripheral device 102. A keyboardperipheral device, for example, may comprise a number of input keys(e.g., a QWERTY, Dvorak, T-9 or other keyboard) that may be associatedwith any number of outputs that may be controlled by the computingsystem 100 under the control of the input logical layer 110. One or moreoutputs of the keyboard may be associated with an input of the keyboard.

In one implementation, for example, a height of a particular key orgroup of keys may be raised or lowered to raise or lower their profilerelative to other keys on the keyboard. On a locked mobile telephonekeyboard, for example, keys used to unlock the keyboard may be loweredto reduce the chance of having the keys inadvertently pressed. Inanother implementation, as one or more modifier keys (e.g., “CTRL,”“ALT,” “FN,” “ALTGR,” or other modifier keys) are pressed, keys thatcorrespond to that particular key may be raised in height and/or keysthat do not correspond to a particular modifier key may be lowered inheight to indicate which keys are expected to be depressed.

One or more displays on the peripheral device may also be used toindicate current settings, likely keystroke combinations, or otherinformation. Displays on a keyboard may show current settings for thekeyboard (e.g., fonts, colors, uppercase, lowercase). The displays maybe located on individual keys of the keyboard or on another portion ofthe display. Similar to key height outputs described above, the displaysmay also be used to indicate likely keystrokes (e.g., when a modifierkey has been depressed or where an application predicts likely keystrokecombinations) or other settings (e.g., a “key lock-out” feature thatprevents repetitive otherwise unwanted keystroke combinations).

Other peripheral devices may also include any number of outputs that maybe associated with an input of the device. On a mouse, for example, abutton of the mouse may be raised when a cursor controlled by the mouseis over a link that may be selected by use of that button and/or loweredwhen the cursor is not over such a link.

An access peripheral device (e.g., a door handle of an automobile or asecured doorway) may be controlled to allow access by controlling one ormore output of the peripheral device. When a user is deemed to be anauthorized user, a door handle or other access peripheral device, may becontrolled to allow access. A door handle may be retracted when accessis to be prevented and/or extended to an accessible position when accessis permitted. In another implementation, a temperature of a button for aclimate control system (e.g., on a house thermostat or an automobileclimate control system) may be controlled to indicate to a user if itwill increase or decrease a temperature set point of the climate controlsystem.

An input and/or an output of the peripheral device 102 may be static ordynamic. A static input or output, for example, may comprise an input oroutput that is used for a single purpose, while a dynamic input oroutput may change functions depending upon one or more conditions of thecomputing system 100. A dynamic button in an automobile computingsystem, for example, may be used to initiate ignition of an engine whenthe automobile is off, while the same button may be used to control someother aspect of the automobile computing system when the engine isrunning. Similarly, a dynamic output associated with the button may bechanged corresponding to the function of the input button at any giventime.

These implementations of outputs that may be associated with an input ofa peripheral device are merely examples. One skilled in the art wouldreadily appreciate from this disclosure that any number of other typesof peripheral devices may include any number of types of outputs thatmay be associated with one or more type of input of a peripheral device.

The peripheral device 102 is self-aware in that it comprisesself-identifier configuration information 106 that may be used by thecomputing system 100 to associate an output capability of the peripheraldevice 102 with an input capability of the peripheral device 102. Theperipheral device 102 is coupled to the computing system 100 viacoupling hardware 108 (e.g., a port associated with the computing system100, such as a serial port, a USB port, a parallel port, a wirelesstransceiver, or the like).

The self-identifier configuration information 106 may comprise, forexample, a logical association between the output capability and theinput capability of the peripheral device 102, physical attributes ofthe output or input device (e.g., a screen size, color capabilities,placement capabilities, movement capabilities, or other attributes).

An input logical layer 110 is provided in the computing system 100 forassociating an output of the peripheral device 102 with an input of thatperipheral device. The input logical layer 110 provides unified accessto and control of different elements of the peripheral device 102 to anoperating system running on the computing system 100. Where a keyboardperipheral device comprises a number of inputs and correspondingoutputs, for example, the input logical layer 110 may provide aninterface for accessing and controlling the inputs and outputs of thekeyboard peripheral device.

In one implementation, for example, the input logical layer may linkseparate logical representations of devices, such as device classes orother representations. In the implementation shown in FIG. 1, forexample, the computing system 100 comprises device classes for akeyboard 112, a mouse 114, and a door handle 116. In addition, for eachclass, the computing system 100 further comprises an interface set 118,120, and 122 (e.g., an interface layer) including attributes for thecorresponding device class. The interface set may comprise, for example,an application programming interface (API) set that includes attributesfor the corresponding device class. API sets are just one example of aninterface set that may be used. Other types of interface sets may alsobe used.

The input logical layer 110 may receive the self-identifierconfiguration information 106 from the peripheral device 102 and createthe logical representations for the peripheral device 102. The inputlogical layer 110, for example, may receive a peripheral device classand configuration information identifying one or more inputs and outputsof the peripheral device 102 and generate an interface associating atleast one output with an input of the peripheral device 102.

FIG. 2 depicts an example data structure 200 of an input logical layerfor a human interface device (HID) peripheral device that may be usedwith a computing system for associating output capabilities of aperipheral device with input attributes of that peripheral device. Asshown in FIG. 2, the example data structure 200 comprises logicalcollections for peripheral devices associating inputs and outputs of theperipheral devices. In the implementation shown in FIG. 2, the datastructure 200 comprises a logical collection for each input of theperipheral device. A logical collection for a keyboard input “a” 202,for example, comprises an input identifier together with example outputsthat may be associated with that input. In this example, the logicalcollection 202 corresponding to an input “a” comprises outputidentifiers corresponding to a “Display,” a “Height,” and a“Temperature.” Other output identifiers are of course possible. Aphysical location of the input and/or each associated output may also beprovided, such as shown in FIG. 2.

In this implementation, the input logical layer may utilize the datastructure 200 to identify and control one or more outputs correspondingto a particular input of a peripheral device coupled to a computersystem. An application may, for example, utilize the logical input layerto control an output on the peripheral device corresponding to aparticular input of the peripheral device. An application running on acomputing system may, for example, direct the input logical layer toalter a height, temperature, and/or a display associated with an inputkey “a” of the keyboard peripheral device.

The data structure 200 shown in FIG. 2, however, is merely one exampleof a data structure that may be used. Other data structures, such as anXML schema data structure, may also be used.

FIG. 3 depicts an example process 300 for associating an output of aperipheral device with an input of that peripheral device in a computingsystem. In the process 300, a peripheral device comprising at least oneinput and at least one output is coupled to the computing system inoperation 302. The computing system reads a descriptor for each inputand output of the peripheral device in operation 304. The descriptormay, for example, include the capability of each input and output andmay further include attributes (e.g., a static or dynamic attribute) foreach input and output of the peripheral device. An input logical layerof the computing system separates logical representations of a class orother the top level of a peripheral device (e.g., a keyboard, a mouse, ajoy stick, a door handle, or the like) in operation 306. The inputlogical layer can also build an interface set (e.g., an API layer)associated with each class of the peripheral device in operation 308.Operations 302, 304, 306, and 308 may comprise a set-up operation thatmay or may not be repeated in subsequent operations after the peripheraldevice has previously been coupled to the computing system.

Depending on the class or other logical designation of the peripheraldevice, the input logical layer of the computing system may call the setattribute API of an input attribute logical layer in operation 310. Theinput logical layer may also determine an attribute associated with aninput report in operation 312. The input logical layer may also set anattribute of the peripheral device in operation 314. In oneimplementation, for example, the input logical layer may sendinformation over a bus, may send a state change request to a cache orother data storage held in the peripheral device, send state informationto the peripheral device to prepopulate the cache or other data storageof the peripheral device for a specific application, or set an attributeof the peripheral device via another method. In some variousimplementations, for example, a keyboard peripheral device may be setfor various math sets, music sets, symbol translations for foreignlanguages and outputs of the keyboard peripheral device may be used toidentify the variations of the inputs of the keyboard. The individualkeys of the keyboard peripheral device may each comprise a display thatmay be altered to display various math sets, music sets, or languagesets that could be used with the keyboard peripheral device.

One or more output of a peripheral device may be associated with aninput of that peripheral device. In one example, a keyboard modifier key(e.g., “CTRL,” “ALT,” “FN,” “ALTGR,” or other modifier keys) may beassociated with outputs identifying acceptable keys of a limited entryset that may correspond to a latched modifier key. The limited entryset, for example, may include keys that correspond to features of amenu. When an “ALT” modifier key is latched in Microsoft® Word, forexample, an output for the keys corresponding to selections available inthe menu (e.g., “F” for “File,” “E” for “Edit,” and the like) may beactivated to identify to a user what keystrokes will perform anidentified function. The outputs for the limited entry set of keys may,for example, be highlighted (e.g., displaying a different appearance(e.g., a color), position (e.g., a raised height), feel (e.g., a tactileidentifier such as a vibration or bump), and the like). Similarly,outputs corresponding to keyboard shortcuts (e.g., when data has beencopied and is available to be inserted or pasted) or predictedkeystrokes may also be activated.

In other examples, a plurality of keys may be grouped together toprovide a larger keyset for providing easier input (e.g., in a physicalaccommodation, a gaming environment, where a full keyset is notrequired, or the like). Further, outputs (e.g., displays) on theindividual keys may display which particular keys are grouped togetherand what the group collectively represents. A group of keys may becollectively illuminated with a common color, or other representation,to identify the keys as being grouped together. Further, a display mayfurther indicate an input for which the group of keys will collectivelyrepresent (e.g., a group of keys may collectively represent a singleletter, number, function, command, or other input).

In a keyboard, font and/or case changes may be directly represented onkeys of a keyboard. Displays on the individual keys may show a truerepresentation of how a particular key would be represented in aselected font. Where a Times New Roman font has been selected in anapplication, for example, keys of a keyboard may show how individualkeys would be displayed in that font. Similarly, displays on the keysmay show cases of letters depending on whether a “CAPS LOCK” key isactivated or if a “SHIFT” key is latched. Also, displays on the keys mayindicate functions that may be selected when a “FN” key is latched.Other indications are also possible.

Where particular keys or combinations of keys are expected or required(e.g., a “CTRL,” “ALT,” “DEL” combination is required), those keys maybe highlighted (e.g., through a display, position, feel, or othermanner) and/or other keys may be dimmed or otherwise given a lowerprofile (e.g., retracted).

“Timeout” or “lockout” sequences may also be indicated through displayson keys of a keyboard. Where repetitive striking of a key is disabledwithin a time period, for example, one or more displays on the keyboardmay be used to indicate that the key is being locked. When a particularkey is latched, for example, the key may be highlighted for apredetermined time period to indicate that the key is locked fromreceiving a further input during that time period. Displays on one ormore keys may further be used to indicate that the time out is subsiding(e.g., an initial display indicating that the key is latched and a decaysequence to indicate the time out is subsiding).

Invalid inputs on a keyboard may also be indicated to a user via one ormore output on a keyboard. Outputs of a peripheral device may visually,spatially, tactually, or otherwise indicate that an invalid input hasbeen received from that device.

Graphic or other representations of particular available function mayalso be represented on an output of a peripheral device corresponding toa particular input of that peripheral device. A display on a key of akeyboard, for example, may depict a graphical representation (e.g., anicon) that corresponds to a particular function available by activationof a key of the keyboard.

In a gaming or other environment, outputs of a peripheral device may beused to augment input options of the peripheral device. In oneimplementation, contextual clues based on a game or educationalapplication may be provided. A “hint” mode in a maze game, for example,may activate displays showing valid navigational inputs (e.g., keys)that may be used to navigate the maze. Similarly, inputs of a peripheraldevice may be altered depending upon certain situations. In a roleplaying game, for example, a heightened sense of awareness may beaccomplished by making inputs easier while a reduced sense of awareness(e.g., an intoxicated, drugged, or impaired character) may beaccomplished by making user inputs of the peripheral device moredifficult. Inputs of the peripheral device, for example, may indicatemore or less information than would otherwise be provided. Further,layout of inputs may be altered to make input easier or more difficultdepending on the conditions present in the game. Keys or other inputdevices may be raised or lowered in profile, highlighted or hidden,given more or less resistance, moved or assigned different values, orthe like depending upon the conditions of the game. Combinations ofinput entry in a game may also be predicted and highlighted ordiminished depending upon the circumstances.

In an education application, e.g., a typing or musical instrumenttutorial application, input devices may be augmented by outputcapabilities of the peripheral device. Predictive or desired inputs maybe identified to aid a user in learning correct inputs or combinationsof inputs.

While particular examples may be given for one or more particularimplementation of a peripheral device, such as for a keyboard, similarfunctionalities or capabilities may also be used with respect to othertypes of peripheral devices.

An example of a hardware and operating environment of FIG. 4 forimplementing operations to associate an output of a peripheral devicecoupled to a computing system with an input of that peripheral deviceincludes a general purpose computing device in the form of a computer400, including a processing unit 402, a system memory 404, and a systembus 418 that operatively couples various system components, includingthe system memory 404 to the processing unit 402. There may be only oneor there may be more than one processing unit 402, such that theprocessor of computer 400 comprises a single central processing unit(CPU), or a plurality of processing units, commonly referred to as aparallel processing environment. The computer 400 may be a conventionalcomputer, a distributed computer, or any other type of computer; theinvention is not so limited.

The system bus 418 may be any of several types of bus structuresincluding a memory bus or memory controller, a peripheral bus, aswitched fabric, point-to-point connections, and a local bus using anyof a variety of bus architectures. The system memory 404 may also bereferred to as simply the memory, and includes read only memory (ROM)406 and random access memory (RAM) 405. A basic input/output system(BIOS) 408, containing the basic routines that help to transferinformation between elements within the computer 400, such as duringstart-up, is stored in ROM 406. The computer 400 further includes a harddisk drive 430 for reading from and writing to a hard disk, not shown, amagnetic disk drive 432 for reading from or writing to a removablemagnetic disk 436, and an optical disk drive 434 for reading from orwriting to a removable optical disk 438 such as a CD ROM or otheroptical media.

The hard disk drive 430, magnetic disk drive 432, and optical disk drive434 are connected to the system bus 418 by a hard disk drive interface420, a magnetic disk drive interface 422, and an optical disk driveinterface 424, respectively. The drives and their associatedcomputer-readable media provide nonvolatile storage of computer-readableinstructions, data structures, program modules and other data for thecomputer 400. It should be appreciated by those skilled in the art thatany type of computer-readable media that can store data that isaccessible by a computer, for example, magnetic cassettes, flash memorycards, digital video disks, RAMs, and ROMs, may be used in the exemplaryoperating environment.

A number of program modules may be stored on the hard disk 430, magneticdisk 432, optical disk 434, ROM 406, or RAM 405, including an operatingsystem 410, one or more application programs 412, other program modules414, and program data 416. In an exemplary implementation, a method forassociating an output of a peripheral device with an input of theperipheral device, may be incorporated as part of the operating system410, application programs 412, or other program modules 414.

A user may enter commands and information into the personal computer 400through input devices such as a keyboard 440 and pointing device 442,for example, a mouse. Other input devices (not shown) may include, forexample, a microphone, a joystick, a game pad, a tablet, a touch screendevice, a satellite dish, a scanner, a facsimile machine, and a videocamera. These and other input devices are often connected to theprocessing unit 402 through a serial port interface 426 that is coupledto the system bus 418, but may be connected by other interfaces, such asa parallel port, game port, or a universal serial bus (USB).

A monitor 444 or other type of display device is also connected to thesystem bus 418 via an interface, such as a video adapter 446. Inaddition to the monitor 444, computers typically include otherperipheral output devices, such as a printer 458 and speakers (notshown). These and other output devices are often connected to theprocessing unit 402 through the serial port interface 426 that iscoupled to the system bus 418, but may be connected by other interfaces,such as a parallel port, game port, or a universal serial bus (USB). Amedia tuner module 460 may also be connected to the system bus 418 totune audio and video programming (e.g., TV programming) for outputthrough the video adapter 446 or other presentation output modules.

The computer 400 may operate in a networked environment using logicalconnections to one or more remote computers, such as remote computer454. These logical connections may be achieved by a communication devicecoupled to or integral with the computer 400; the invention is notlimited to a particular type of communications device. The remotecomputer 454 may be another computer, a server, a router, a networkpersonal computer, a client, a peer device, or other common networknode, and typically includes many or all of the elements described aboverelative to the computer 400, although only a memory storage device 456has been illustrated in FIG. 4. The logical connections depicted in FIG.4 include a local-area network (LAN) 450 and a wide-area network (WAN)452. Such networking environments are commonplace in office networks,enterprise-wide computer networks, intranets and the Internet, which areall types of networks.

When used in a LAN 450 environment, the computer 400 may be connected tothe local network 450 through a network interface or adapter 428, e.g.,Ethernet or other communications interfaces. When used in a WAN 452environment, the computer 400 typically includes a modem 448, a networkadapter, or any other type of communications device for establishingcommunications over the wide area network 452. The modem 448, which maybe internal or external, is connected to the system bus 418 via theserial port interface 426. In a networked environment, program modulesdepicted relative to the personal computer 400, or portions thereof, maybe stored in a remote memory storage device. It is appreciated that thenetwork connections shown are exemplary and other means of andcommunications devices for establishing a communications link betweenthe computers may be used.

In an example implementation, an input logical layer module and othermodules may be embodied by instructions stored in memory 422 and/orstorage devices 429 or 431 and processed by the processing unit 421.Logical representations, device interface data sets, and other data maybe stored in memory 422 and/or storage devices 429 or 431 as persistentdatastores.

The technology described herein may be implemented as logical operationsand/or modules in one or more systems. The logical operations may beimplemented as a sequence of processor-implemented steps executing inone or more computer systems and as interconnected machine or circuitmodules within one or more computer systems. Likewise, the descriptionsof various component modules may be provided in terms of operationsexecuted or effected by the modules. The resulting implementation is amatter of choice, dependent on the performance requirements of theunderlying system implementing the described technology. Accordingly,the logical operations making up the embodiments of the technologydescribed herein are referred to variously as operations, steps,objects, or modules. Furthermore, it should be understood that logicaloperations may be performed in any order, unless explicitly claimedotherwise or a specific order is inherently necessitated by the claimlanguage.

The above specification, examples and data provide a completedescription of the structure and use of example embodiments of theinvention. Although various embodiments of the invention have beendescribed above with a certain degree of particularity, or withreference to one or more individual embodiments, those skilled in theart could make numerous alterations to the disclosed embodiments withoutdeparting from the spirit or scope of this invention. In particular, itshould be understand that the described technology may be employedindependent of a personal computer. Other embodiments are thereforecontemplated. It is intended that all matter contained in the abovedescription and shown in the accompanying drawings shall be interpretedas illustrative only of particular embodiments and not limiting. Changesin detail or structure may be made without departing from the basicelements of the invention as defined in the following claims.

Although the subject matter has been described in language specific tostructural features and/or methodological arts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claimed subject matter.

1. A method on a computing system for associating an output of a coupledperipheral device to an input of the peripheral device comprising:receiving a descriptor configuration input from the coupled peripheraldevice describing attributes of the peripheral device and an associationbetween the input of the peripheral device and the output of theperipheral device; providing peripheral device classes of associatedinput attributes including associated output attributes of theperipheral device; and informing an instantiated application ofattributes of the peripheral device through classes.
 2. The method ofclaim 1 wherein an input logical layer performs the providing andinforming operations.
 3. The method of claim 1 wherein the peripheraldevice classes of associated input attributes of the peripheral devicecomprise interface sets.
 4. The method of claim 3 wherein the interfacesets comprise application programming interface (API) layers.
 5. Themethod of claim 4 wherein the instantiated application selects APIlayers and parameters to leverage association of the input of theperipheral device and the associated output of the peripheral device. 6.The method of claim 1 further comprising building interface setscomprising the associated input attributes including associated outputattributes of the peripheral device.
 7. The method of claim 1 whereinthe interface sets comprise application programming interfaces (API)layers.
 8. The method of claim 7 wherein the API layers send anattribute change request to an input logical layer.
 9. The method ofclaim 8 wherein the input logical layer sends instructions to theperipheral device to change an attribute of the peripheral device.
 10. Amethod on a computer for associating an output of a coupled peripheraldevice to an input of the peripheral device comprising: providing aninterface set comprising associated input attributes and outputattributes of a peripheral device; using an input logical layer toaccess attributes of an interface set for an input of the peripheraldevice including associated output attributes of the peripheral device;selecting an attribute associated with the input; and setting theselected attribute of the peripheral device.
 11. The method of claim 10wherein the interface set comprises an application programming interface(API) layer.
 12. The method of claim 10 wherein information for theselected attribute is transmitted over a bus.
 13. The method of claim 10wherein the input logical layer sends a state change request to datastorage of the peripheral device.
 14. The method of claim 13 wherein thedata storage of the peripheral device comprises a cache.
 15. The methodof claim 10 wherein the input logical layer sends state information toprepopulate data storage of the peripheral device.
 16. A computerreadable medium storing computer-executable instructions for performinga computer process to control a computing system, wherein theinstructions comprise operations to: receive descriptor configurationinformation from a peripheral device; build interface sets includingattributes of the input and an associated output of the peripheraldevice; use the interface sets to select and set attributes of theoutput of the peripheral device.
 17. The computer readable medium ofclaim 16 wherein the interface sets comprise application programminginterface (API) layers.
 18. The computer readable medium of claim 16wherein the interface sets comprise classes and attributes of the inputof the peripheral device.
 19. The computer readable medium of claim 16wherein an input logical layer builds the interface sets.
 20. Thecomputer readable medium of claim 19 wherein the input logical layersets attributes of the output of the peripheral device via a statechange.